{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 1A. Data Cleaning: Airbnb Listings\n",
    "<hr/>\n",
    "\n",
    "`Listings.cvs` contains detailed listings data, including various attributes (features) of each listing such as location, number of bedrooms, bathrooms, type of bed, reviews, etc for the month of January. The raw data contains 27,392 records and 52 columns. We will first load the data into a Pandas dataframe; however, not all of these columns are applicable for predicting listing prices. We will select the applicable predictors as follows:\n",
    "\n",
    "### Column Selection\n",
    "\n",
    "#### Selected Columns\n",
    "- id\n",
    "    - will not be used in the prediction, only used for indexing and referencing purposes\n",
    "- host_id\n",
    "    - will not be used in the prediction, only used for indexing and referencing purposes\n",
    "- zipcode\n",
    "- property_type\n",
    "- room_type\n",
    "- accommodates\n",
    "- bathrooms\n",
    "- bedrooms\n",
    "- beds\n",
    "- bed_type\n",
    "- price\n",
    "- minimum_nights\n",
    "- availability_30\n",
    "- number_of_reviews\n",
    "- review_scores_rating\n",
    "- host_listing_count\n",
    "    \n",
    "#### Removed Columns\n",
    "- scrape_id\n",
    "- last_scraped\n",
    "- name (title used in the listing)\n",
    "- picture_url\n",
    "    - future studies may choose to integrate image analysis as a predictor\n",
    "- host_name\n",
    "    - there may certainly be some predictive power when considering gender / ethnicity of the name; however, we chose not to incorporate host_name for various ethical reasons as well as difficulty in discerning gender neutral names let alone ethnicity from a name\n",
    "- host_since\n",
    "    - better explained by number of reviews since a long time host may not actually have made any listings made over that period of time\n",
    "- host_picture_url\n",
    "- street\n",
    "- neighbourhood\n",
    "- neighbourhood_cleansed\n",
    "- city\n",
    "- state\n",
    "    - these location features are better explained by zipcode, which will be easier to turn into a hot encoding as well. By using zipcode we can worry less and mitigate the effects of inaccurate location listings (captured by `is_location_exact` predictor) as a broader location category is used and for Airbnb the zipcode integrity is very often reliable by nature of the address input\n",
    "- market\n",
    "- country\n",
    "- latitude\n",
    "- longitude\n",
    "    - location again better explained by zipcode\n",
    "- is_location_exact\n",
    "    - by using zipcode the exactness of location is mitigated (many records were indeed exact)\n",
    "- square_feet\n",
    "    - had 26,000+ (96% of original dataset) missing column values - too many to impute\n",
    "- weekly_price\n",
    "- monthly_price\n",
    "    - `weekly` and `monthly` removed since we are focusing on single day listings\n",
    "- guests_included\n",
    "    - guests have their own price column that is calculated independently of the listing price\n",
    "- extra_people\n",
    "- maximum_nights\n",
    "- calendar_updated\n",
    "- calendar_last_scraped\n",
    "- first_review\n",
    "- last_review\n",
    "- review_score_accuracy <-> review_scores_value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import seaborn as sb\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cmx\n",
    "import matplotlib.colors as colors\n",
    "import math\n",
    "import pylab\n",
    "import scipy.stats as stats\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "cols = [\n",
    "    'id',\n",
    "    'host_id',\n",
    "    'zipcode',\n",
    "    'property_type',\n",
    "    'room_type',\n",
    "    'accommodates',\n",
    "    'bedrooms',\n",
    "    'beds',\n",
    "    'bed_type',\n",
    "    'price',\n",
    "    'number_of_reviews',\n",
    "    'review_scores_rating',\n",
    "    'host_listing_count',\n",
    "    'availability_30',\n",
    "    'minimum_nights',\n",
    "    'bathrooms'\n",
    "]\n",
    "\n",
    "data = pd.read_csv('../datasets/raw_datasets/listings.csv', usecols=cols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>host_id</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>property_type</th>\n",
       "      <th>room_type</th>\n",
       "      <th>accommodates</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>beds</th>\n",
       "      <th>bed_type</th>\n",
       "      <th>price</th>\n",
       "      <th>minimum_nights</th>\n",
       "      <th>availability_30</th>\n",
       "      <th>number_of_reviews</th>\n",
       "      <th>review_scores_rating</th>\n",
       "      <th>host_listing_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1069266</td>\n",
       "      <td>5867023</td>\n",
       "      <td>10022-4175</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>$160.00</td>\n",
       "      <td>3</td>\n",
       "      <td>21</td>\n",
       "      <td>62</td>\n",
       "      <td>86.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1846722</td>\n",
       "      <td>2631556</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>10</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>$105.00</td>\n",
       "      <td>1</td>\n",
       "      <td>28</td>\n",
       "      <td>22</td>\n",
       "      <td>85.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2061725</td>\n",
       "      <td>4601412</td>\n",
       "      <td>11221</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Private room</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>$58.00</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>35</td>\n",
       "      <td>98.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>44974</td>\n",
       "      <td>198425</td>\n",
       "      <td>10011</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>$185.00</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>26</td>\n",
       "      <td>96.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4701675</td>\n",
       "      <td>22590025</td>\n",
       "      <td>10011</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>$195.00</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "      <td>100.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id   host_id     zipcode property_type        room_type  accommodates  \\\n",
       "0  1069266   5867023  10022-4175     Apartment  Entire home/apt             2   \n",
       "1  1846722   2631556         NaN     Apartment  Entire home/apt            10   \n",
       "2  2061725   4601412       11221     Apartment     Private room             2   \n",
       "3    44974    198425       10011     Apartment  Entire home/apt             2   \n",
       "4  4701675  22590025       10011     Apartment  Entire home/apt             2   \n",
       "\n",
       "   bathrooms  bedrooms  beds  bed_type     price  minimum_nights  \\\n",
       "0        1.0       1.0   1.0  Real Bed  $160.00                3   \n",
       "1        1.0       3.0   3.0  Real Bed  $105.00                1   \n",
       "2        1.0       1.0   2.0  Real Bed   $58.00                3   \n",
       "3        1.0       1.0   1.0  Real Bed  $185.00               10   \n",
       "4        1.0       1.0   2.0  Real Bed  $195.00                1   \n",
       "\n",
       "   availability_30  number_of_reviews  review_scores_rating  \\\n",
       "0               21                 62                  86.0   \n",
       "1               28                 22                  85.0   \n",
       "2                4                 35                  98.0   \n",
       "3                1                 26                  96.0   \n",
       "4               30                  1                 100.0   \n",
       "\n",
       "   host_listing_count  \n",
       "0                   1  \n",
       "1                   2  \n",
       "2                   4  \n",
       "3                   1  \n",
       "4                   1  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id, Number of Missing Values: 0\n",
      "host_id, Number of Missing Values: 0\n",
      "zipcode, Number of Missing Values: 162\n",
      "property_type, Number of Missing Values: 6\n",
      "room_type, Number of Missing Values: 0\n",
      "accommodates, Number of Missing Values: 0\n",
      "bathrooms, Number of Missing Values: 463\n",
      "bedrooms, Number of Missing Values: 140\n",
      "beds, Number of Missing Values: 98\n",
      "bed_type, Number of Missing Values: 0\n",
      "price, Number of Missing Values: 0\n",
      "minimum_nights, Number of Missing Values: 0\n",
      "availability_30, Number of Missing Values: 0\n",
      "number_of_reviews, Number of Missing Values: 0\n",
      "review_scores_rating, Number of Missing Values: 8657\n",
      "host_listing_count, Number of Missing Values: 0\n"
     ]
    }
   ],
   "source": [
    "# determine the number of missing entries in each column\n",
    "for col in data.columns:\n",
    "    print col + ', Number of Missing Values:', len(data[col][data[col].isnull()])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Data Cleaning\n",
    "\n",
    "1. We drop any entries that are missing (NaN) values (except for review_scores_rating).\n",
    "2. We convert the format in `price` from $1.00 into a float of 1.00. \n",
    "3. We also drop any entries that are inconsistent; i.e. predictors `accommodates`, `bedrooms`, `beds`, or `price` with a value of 0.\n",
    "4. Convert ZipCode values such as 10022-4175 into 10022"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of NaN values removed: 769\n",
      "Number of Accommodates 0: 0\n",
      "Number of Bedrooms 0: 2321\n",
      "Number of Beds 0: 0\n",
      "Number of Listings with Price $0.00: 0\n"
     ]
    }
   ],
   "source": [
    "# remove NaN values from dataframe\n",
    "original = len(data)\n",
    "data = data.dropna(how='any', subset=['zipcode', 'property_type', 'bedrooms', 'beds', 'bathrooms'])\n",
    "print 'Number of NaN values removed:', original - len(data)\n",
    "\n",
    "# convert formatting for price\n",
    "data['price'] = (data['price'].str.replace(r'[^-+\\d.]', '').astype(float))\n",
    "\n",
    "# drop any inconsistent values\n",
    "print 'Number of Accommodates 0:', len(data[data['accommodates'] == 0])\n",
    "print 'Number of Bedrooms 0:', len(data[data['bedrooms'] == 0])\n",
    "print 'Number of Beds 0:', len(data[data['beds'] == 0])\n",
    "print 'Number of Listings with Price $0.00:', len(data[data['price'] == 0.00])\n",
    "\n",
    "data = data[data['accommodates'] != 0]\n",
    "data = data[data['bedrooms'] != 0]\n",
    "data = data[data['beds'] != 0]\n",
    "data = data[data['price'] != 0.00]\n",
    "\n",
    "# convert ZipCode\n",
    "data['zipcode'] = data['zipcode'].str.replace(r'-\\d+', '')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>host_id</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>property_type</th>\n",
       "      <th>room_type</th>\n",
       "      <th>accommodates</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>beds</th>\n",
       "      <th>bed_type</th>\n",
       "      <th>price</th>\n",
       "      <th>minimum_nights</th>\n",
       "      <th>availability_30</th>\n",
       "      <th>number_of_reviews</th>\n",
       "      <th>review_scores_rating</th>\n",
       "      <th>host_listing_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1069266</td>\n",
       "      <td>5867023</td>\n",
       "      <td>10022</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>160.0</td>\n",
       "      <td>3</td>\n",
       "      <td>21</td>\n",
       "      <td>62</td>\n",
       "      <td>86.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2061725</td>\n",
       "      <td>4601412</td>\n",
       "      <td>11221</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Private room</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>58.0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>35</td>\n",
       "      <td>98.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>44974</td>\n",
       "      <td>198425</td>\n",
       "      <td>10011</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>185.0</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>26</td>\n",
       "      <td>96.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4701675</td>\n",
       "      <td>22590025</td>\n",
       "      <td>10011</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>195.0</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "      <td>100.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>68914</td>\n",
       "      <td>343302</td>\n",
       "      <td>11231</td>\n",
       "      <td>Apartment</td>\n",
       "      <td>Entire home/apt</td>\n",
       "      <td>6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Real Bed</td>\n",
       "      <td>165.0</td>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "      <td>16</td>\n",
       "      <td>96.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id   host_id zipcode property_type        room_type  accommodates  \\\n",
       "0  1069266   5867023   10022     Apartment  Entire home/apt             2   \n",
       "2  2061725   4601412   11221     Apartment     Private room             2   \n",
       "3    44974    198425   10011     Apartment  Entire home/apt             2   \n",
       "4  4701675  22590025   10011     Apartment  Entire home/apt             2   \n",
       "5    68914    343302   11231     Apartment  Entire home/apt             6   \n",
       "\n",
       "   bathrooms  bedrooms  beds  bed_type  price  minimum_nights  \\\n",
       "0        1.0       1.0   1.0  Real Bed  160.0               3   \n",
       "2        1.0       1.0   2.0  Real Bed   58.0               3   \n",
       "3        1.0       1.0   1.0  Real Bed  185.0              10   \n",
       "4        1.0       1.0   2.0  Real Bed  195.0               1   \n",
       "5        1.0       2.0   3.0  Real Bed  165.0               2   \n",
       "\n",
       "   availability_30  number_of_reviews  review_scores_rating  \\\n",
       "0               21                 62                  86.0   \n",
       "2                4                 35                  98.0   \n",
       "3                1                 26                  96.0   \n",
       "4               30                  1                 100.0   \n",
       "5               11                 16                  96.0   \n",
       "\n",
       "   host_listing_count  \n",
       "0                   1  \n",
       "2                   4  \n",
       "3                   1  \n",
       "4                   1  \n",
       "5                   2  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we see the data is now clean\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of missing review scores ratings: 7712\n"
     ]
    }
   ],
   "source": [
    "print 'Number of missing review scores ratings:', len(data['review_scores_rating'][data['review_scores_rating'].isnull()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Unique Accomodation:  [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]\n",
      "Accommodation 1: 2643\n",
      "Accommodation 2: 11400\n",
      "Accommodation 3: 2909\n",
      "Accommodation 4: 4278\n",
      "Accommodation 5: 982\n",
      "Accommodation 6: 1214\n",
      "Accommodation 7: 217\n",
      "Accommodation 8: 333\n",
      "Accommodation 9: 57\n",
      "Accommodation 10: 119\n",
      "Accommodation 11: 15\n",
      "Accommodation 12: 43\n",
      "Accommodation 13: 4\n",
      "Accommodation 14: 14\n",
      "Accommodation 15: 5\n",
      "Accommodation 16: 69\n"
     ]
    }
   ],
   "source": [
    "# explore distribution of accommodates\n",
    "print 'Number of Unique Accomodation: ', np.unique(data['accommodates'])\n",
    "for i in range(1, 17):\n",
    "    print 'Accommodation {}:'.format(i), len(data[data['accommodates'] == i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x103d55d50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize distribution of price (target variable)\n",
    "plt.hist(data['accommodates'], bins=50)\n",
    "plt.title(\"Histogram of Accommodations\")\n",
    "plt.xlabel(\"Number of Accommodations\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that a majority of listings have accomodations for 1-4 people. 1 bed typically accomodates 2 individuals, so let's plot beds instead to analyze how many of the listings are single bedroom listings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Unique Beds:  [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.  16.]\n",
      "Beds 1: 16002\n",
      "Beds 2: 5418\n",
      "Beds 3: 1770\n",
      "Beds 4: 610\n",
      "Beds 5: 243\n",
      "Beds 6: 117\n",
      "Beds 7: 41\n",
      "Beds 8: 22\n",
      "Beds 9: 3\n",
      "Beds 10: 20\n",
      "Beds 11: 4\n",
      "Beds 12: 9\n",
      "Beds 13: 1\n",
      "Beds 14: 15\n",
      "Beds 15: 0\n",
      "Beds 16: 27\n"
     ]
    }
   ],
   "source": [
    "print 'Number of Unique Beds: ', np.unique(data['beds'])\n",
    "for i in range(1, 17):\n",
    "    print 'Beds {}:'.format(i), len(data[data['beds'] == i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a497350>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize distribution of beds\n",
    "plt.hist(data['beds'], bins=50)\n",
    "plt.title(\"Histogram of Beds\")\n",
    "plt.xlabel(\"Bed Count\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that a majority of our listings are indeed single bedroom listings roughly 66%."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11744a9d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize distribution of review scores ratings\n",
    "plt.hist(data['review_scores_rating'][~data['review_scores_rating'].isnull()])\n",
    "plt.title(\"Histogram of Review Scores Ratings\")\n",
    "plt.xlabel(\"Review Score\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are 7712 listings with no review_scores_rating (NaN) values. We will handle this by turning the `review_scores_ratings` into a categorical predictor. Based on the histogram, we see that a vast majority of the listings seem to have overall favorable ratings; i.e. skewed left distribution. We replace any NaN values that have no review with 'No Reviews' and we remove any remaining inconsistent NaN values that have a `number_of_reviews` > 0. We will also convert the `review_scores_ratings` into buckets. We will have the bucket ranges set more closely to a higher review score to accomodate for the skewed left distribution of the review scores."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# turn NaN scores with 0 reviews into 'No Reviews'\n",
    "idx_vals = data['review_scores_rating'][data['number_of_reviews'] == 0].index.values.tolist()\n",
    "data.loc[idx_vals, ('review_scores_rating')] = data['review_scores_rating'][data['number_of_reviews'] == 0].replace('NaN', 'No Reviews')\n",
    "\n",
    "# remove inconsistent NaN values\n",
    "data = data[~data['review_scores_rating'].isnull()]\n",
    "\n",
    "# ensure all zipcodes are of length 5\n",
    "data = data[data['zipcode'].map(len) == 5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unique Values in the Column: ['20-29' '30-39' '40-49' '50-59' '60-69' '70-79' '80-84' '85-89' '90-94'\n",
      " '95-100' 'No Reviews']\n"
     ]
    }
   ],
   "source": [
    "# convert review_scores_rating into buckets\n",
    "def convert_scores_buckets(val):\n",
    "    if val == 'No Reviews':\n",
    "        return 'No Reviews'\n",
    "    elif val >= 95.0:\n",
    "        return '95-100'\n",
    "    elif val >= 90.0 and val < 95.0:\n",
    "        return '90-94'\n",
    "    elif val >= 85.0 and val < 90.0:\n",
    "        return '85-89'\n",
    "    elif val >= 80.0 and val < 85.0:\n",
    "        return '80-84'\n",
    "    elif val >= 70.0 and val < 80.0:\n",
    "        return '70-79'\n",
    "    elif val >= 60.0 and val < 70.0:\n",
    "        return '60-69'\n",
    "    elif val >= 50.0 and val < 60.0:\n",
    "        return '50-59'\n",
    "    elif val >= 40.0 and val < 50.0:\n",
    "        return '40-49'\n",
    "    elif val >= 30.0 and val < 40.0:\n",
    "        return '30-39'\n",
    "    elif val >= 20.0 and val < 30.0:\n",
    "        return '20-29'\n",
    "    elif val >= 10.0 and val < 20.0:\n",
    "        return '10-19'\n",
    "    elif val < 10.0:\n",
    "        return '0-9'\n",
    "    \n",
    "data['review_scores_rating'] = data['review_scores_rating'].apply(convert_scores_buckets)\n",
    "print 'Unique Values in the Column:', np.unique(data['review_scores_rating'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of remaining records: 24050\n"
     ]
    }
   ],
   "source": [
    "print 'Number of remaining records:', len(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our dataset is now clean and we no longer have any missing values. We have a total of 24,050 records from the original 27,392; thus, we've retained a reasonable amount of records. We have a few columns that contain categorical predictors. The regressors in scikit learn require numeric fields; thus we will use the `get_dummies` routine in Pandas to convert these into 'dummy' variables (one hot encoding); i.e we will add a column for every possible value of the field. We will standardize the non-categorical predictors and convert them to floating point values since we will later try linear regression models such as Ridge and Lasso regression."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Columns: 225\n"
     ]
    }
   ],
   "source": [
    "# encode categorical variables\n",
    "zipcode_dummies = pd.get_dummies(data['zipcode'])\n",
    "property_dummies = pd.get_dummies(data['property_type'])\n",
    "room_dummies = pd.get_dummies(data['room_type'])\n",
    "bed_dummies = pd.get_dummies(data['bed_type'])\n",
    "ratings_scores_dummies = pd.get_dummies(data['review_scores_rating'])\n",
    "\n",
    "# replace the old columns with our new one-hot encoded ones\n",
    "df = pd.concat((data.drop(['zipcode', \\\n",
    "    'property_type', 'room_type', 'bed_type', 'review_scores_rating'], axis=1), \\\n",
    "    zipcode_dummies.astype(int), property_dummies.astype(int), \\\n",
    "    room_dummies.astype(int), bed_dummies.astype(int), ratings_scores_dummies.astype(int)), \\\n",
    "    axis=1)\n",
    "\n",
    "print 'Number of Columns:', len(df.columns)\n",
    "\n",
    "# move target predictor 'price' to the end of the dataframe\n",
    "cols = list(df.columns.values)\n",
    "idx = cols.index('price')\n",
    "rearrange_cols = cols[:idx] + cols[idx+1:] + [cols[idx]]\n",
    "df = df[rearrange_cols]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>host_id</th>\n",
       "      <th>accommodates</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>beds</th>\n",
       "      <th>minimum_nights</th>\n",
       "      <th>availability_30</th>\n",
       "      <th>number_of_reviews</th>\n",
       "      <th>host_listing_count</th>\n",
       "      <th>...</th>\n",
       "      <th>40-49</th>\n",
       "      <th>50-59</th>\n",
       "      <th>60-69</th>\n",
       "      <th>70-79</th>\n",
       "      <th>80-84</th>\n",
       "      <th>85-89</th>\n",
       "      <th>90-94</th>\n",
       "      <th>95-100</th>\n",
       "      <th>No Reviews</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1069266</td>\n",
       "      <td>5867023</td>\n",
       "      <td>-0.520266</td>\n",
       "      <td>-0.331542</td>\n",
       "      <td>-0.407402</td>\n",
       "      <td>-0.493039</td>\n",
       "      <td>0.173906</td>\n",
       "      <td>0.390393</td>\n",
       "      <td>2.716107</td>\n",
       "      <td>-0.355961</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>160.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2061725</td>\n",
       "      <td>4601412</td>\n",
       "      <td>-0.520266</td>\n",
       "      <td>-0.331542</td>\n",
       "      <td>-0.407402</td>\n",
       "      <td>0.381672</td>\n",
       "      <td>0.173906</td>\n",
       "      <td>-0.965897</td>\n",
       "      <td>1.295605</td>\n",
       "      <td>0.933455</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>58.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>44974</td>\n",
       "      <td>198425</td>\n",
       "      <td>-0.520266</td>\n",
       "      <td>-0.331542</td>\n",
       "      <td>-0.407402</td>\n",
       "      <td>-0.493039</td>\n",
       "      <td>2.889531</td>\n",
       "      <td>-1.205242</td>\n",
       "      <td>0.822104</td>\n",
       "      <td>-0.355961</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>185.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4701675</td>\n",
       "      <td>22590025</td>\n",
       "      <td>-0.520266</td>\n",
       "      <td>-0.331542</td>\n",
       "      <td>-0.407402</td>\n",
       "      <td>0.381672</td>\n",
       "      <td>-0.601986</td>\n",
       "      <td>1.108429</td>\n",
       "      <td>-0.493176</td>\n",
       "      <td>-0.355961</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>195.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>68914</td>\n",
       "      <td>343302</td>\n",
       "      <td>1.690892</td>\n",
       "      <td>-0.331542</td>\n",
       "      <td>1.266328</td>\n",
       "      <td>1.256383</td>\n",
       "      <td>-0.214040</td>\n",
       "      <td>-0.407424</td>\n",
       "      <td>0.295992</td>\n",
       "      <td>0.073844</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>165.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 225 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        id   host_id  accommodates  bathrooms  bedrooms      beds  \\\n",
       "0  1069266   5867023     -0.520266  -0.331542 -0.407402 -0.493039   \n",
       "2  2061725   4601412     -0.520266  -0.331542 -0.407402  0.381672   \n",
       "3    44974    198425     -0.520266  -0.331542 -0.407402 -0.493039   \n",
       "4  4701675  22590025     -0.520266  -0.331542 -0.407402  0.381672   \n",
       "5    68914    343302      1.690892  -0.331542  1.266328  1.256383   \n",
       "\n",
       "   minimum_nights  availability_30  number_of_reviews  host_listing_count  \\\n",
       "0        0.173906         0.390393           2.716107           -0.355961   \n",
       "2        0.173906        -0.965897           1.295605            0.933455   \n",
       "3        2.889531        -1.205242           0.822104           -0.355961   \n",
       "4       -0.601986         1.108429          -0.493176           -0.355961   \n",
       "5       -0.214040        -0.407424           0.295992            0.073844   \n",
       "\n",
       "   ...    40-49  50-59  60-69  70-79  80-84  85-89  90-94  95-100  No Reviews  \\\n",
       "0  ...        0      0      0      0      0      1      0       0           0   \n",
       "2  ...        0      0      0      0      0      0      0       1           0   \n",
       "3  ...        0      0      0      0      0      0      0       1           0   \n",
       "4  ...        0      0      0      0      0      0      0       1           0   \n",
       "5  ...        0      0      0      0      0      0      0       1           0   \n",
       "\n",
       "   price  \n",
       "0  160.0  \n",
       "2   58.0  \n",
       "3  185.0  \n",
       "4  195.0  \n",
       "5  165.0  \n",
       "\n",
       "[5 rows x 225 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# convert non-categorical variables to floats and standardize\n",
    "def standardize_col(col):\n",
    "    mean = np.mean(col)\n",
    "    std = np.std(col)\n",
    "    return col.apply(lambda x: (x - mean) / std)\n",
    "\n",
    "non_cat_vars = ['accommodates', 'bedrooms', 'beds', 'number_of_reviews', 'host_listing_count', 'availability_30', 'minimum_nights', 'bathrooms']\n",
    "for col in non_cat_vars:\n",
    "    df[col] = df[col].astype(float)\n",
    "    df[col] = standardize_col(df[col])\n",
    "    \n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nZfX/AUE/76Iix0QIAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b0ca450>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize distribution of price (target variable)\n",
    "plt.hist(df['price'], bins=50)\n",
    "plt.title(\"Histogram of Pricing\")\n",
    "plt.xlabel(\"Pricing (USD) Per Day\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see the distribution for pricing is strongly skewed right. This again makes sense as a majority of the listings on Airbnb are single individual listings. Additionally, Airbnb does strongly cater to travelers who are looking for cheaper places to stay for short durations of time. There are of course listings with a high pricing as well; intuitively this matches with hosts that are listing a high value property such as an entire house. To compensate for the skewed right distribution, we will log the response variable and store the results in a new panda column. We will then run our baseline models on both the logged and original response and compare the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# log transform the response 'price'\n",
    "df['price_log'] = df['price'].apply(lambda x: math.log(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ad791d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize distribution of price (target variable)\n",
    "plt.hist(df['price_log'], bins=30)\n",
    "plt.title(\"Histogram of Pricing Log-Transformed\")\n",
    "plt.xlabel(\"Pricing (USD) Per Day\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nNkfxT+8vtJ0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11744a590>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# qq plot for log-transformed pricing\n",
    "stats.probplot(df['price'], dist=\"norm\", plot=pylab)\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11aebd310>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# qq plot for log-transformed pricing\n",
    "stats.probplot(df['price_log'], dist=\"norm\", plot=pylab)\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that after transformation, the distribution for `price` resembles that of a normal distribution. We see from the Q-Q plots that log-transforming the response variable yields a distribution that more closely resembles that of a normal distribution. This normality validation is important in order to fit the assumptions of linear regression models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# read to csv\n",
    "df.to_csv('../datasets/listings_clean.csv', index=False)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [Root]",
   "language": "python",
   "name": "Python [Root]"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
